package com.ff.xyh.common.servicebase.exception;

import com.ff.xyh.common.entity.result.ResultObject;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Auther FF
 * @Date 2022年 09月 18日
 * @Time 22:50
 */
@ControllerAdvice
public class MyExceptionHandler {

    // 全局异常处理
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ResultObject errorRequest(Exception e){
        e.printStackTrace();
        return ResultObject.error().message("服务端异常: " + e.toString());

    }

    // 特定异常处理
    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public ResultObject arithmeticExceptionHandle(Exception e){

        return ResultObject.error().message("服务端发生算术异常，原因：" + e.getMessage());
    }

    // 自定义异常处理：
    //      第一步： 自定义异常类 集成 RuntimeException
    //      第二部： 状态码 异常信息
    @ExceptionHandler(MyException.class)
    @ResponseBody
    public ResultObject myExceptionHandle(MyException e){

        return ResultObject.error().message("服务端发生自定义异常，原因：" + e.getMessage());
    }

}
